1. Field of the Invention
The present invention is generally related to improved spatial systems and geospatial information systems. Spatial and geospatial information systems involve the use of spatial and/or geospatial information to explore, analyze, visualize, and communicate spatial relationships.
2. Description of the Related Art
Businesses have a great deal of data. Some of the data is spatially referenced data (i.e., the data is associated with a point on the earth using a latitude and longitude), while much of the data is non-spatially referenced data (e.g., sales data that may be in a tabular format). Currently, there is no convenient way for users to spatially analyze non-spatially referenced data. Instead, data is analyzed by comparing tabular data from spreadsheets or data stores and creating pie charts or bar charts to represent tabular data graphically. With these limited options, it is difficult for users to determine the interaction of various data to a spatial perspective.
Spatial Information Management (SIM) enables business applications to use business data in a spatial context by assigning real earth coordinates (i.e., latitude and longitude) to the business data. Associating location information with business data allows SIM users to make more informed decisions quickly by visualizing spatially referenced business data on a map or by executing spatial queries which return results based on an intersection of proximity of various data sets. That is, SIM allows data to be represented in a spatial context and provides information in various formats (e.g., graphical, tabular, text, etc.) by combining various data elements, such as geographic information, demographic information, business information or psychographic information. The SIM industry is made up several areas, including, for example: Geographic Information Systems (GIS), Business Support Systems (BSS), Personal Productivity Applications, and the Internet.
Geographic Information Systems (GIS) are used to handle geographic information reliably. GISs are designed mainly for handling spatial data conversion, data analysis and cartographic display.
Business Support Systems (BSS) are designed mainly to support specific business processes. The following are a few examples of different types of Business Support Systems: Enterprise Resource Planning (ERP), data mining, Customer Relationship Management (CRM), and Supply Chain Management (SCM). ERP integrates departments and functions across a company onto a single computer system that can serve the particular needs of different departments. CRM is a comprehensive way to integrate customer information in areas of business. SCM provides a solution for companies to find the raw components needed to make a product or service, manufacture that product or service, and deliver the product or service to customers. These applications are not, however, designed to support business data in spatial form. Yet, users would be more informed if these applications were enabled to analyze business data spatially using geocoded business records that have information.
Personal Productivity Applications are tools that help improve users' productivity in their daily jobs. Spatially referenced data can also help users manage their daily tasks.
The Internet is a worldwide system of computer networks that allows computers connected to the computer networks to access information from other computers. As the Internet replaces the client server architecture for managing data access, more Internet products are becoming available to support spatially referenced data (e.g., MapQuest®, Autodesk MapGuide™, etc.). Examples of the use of spatially referenced data include obtaining driving directions to a nearest coffee shop or finding all gas stations within ten miles of a specific location.
Currently, SIM users are able to access static, pre-spatially referenced data sets that have been stored on very large storage devices. A data set is a subset of related data. Whenever a user requests certain information using existing conventional software, a user has access only to static data that has been previously stored and referenced (i.e., raster imagery, such as LanSat, DOQQs, DRGs, etc. or vector data such as roads, lakes, landmarks, etc). The term “raster data” refers to one or more pre-generated images. The term “vector data” refers to a set of coordinate numbers that are converted to an image.
It is difficult for users simultaneously to view spatially referenced data and non-spatially referenced data, such as customer information, sales results, and inventory levels. In order to do this, it is necessary for the non-spatially referenced data and spatially referenced data to be accessed in real time from wherever the data exists in an enterprise (i.e., an organization that uses computers), and the information must be spatially referenced or geocoded by associating a longitude and latitude value with each data record to be viewed spatially.
For example, if a salesperson wants to make informed decisions by visualizing how certain marketing promotions are working out, the sales person needs to be able to view the sales data overlaid with other geospatial information, e.g., maps, county boundaries, competitor locations, etc. Then, a salesperson needs to be able to select certain areas on the map to determine why some areas are providing poor results based on the specific marketing promotions which have been used in the specific areas. To accomplish this, a salesperson must have the ability to simultaneously access enterprise data (i.e., data generated by an enterprise, which may also be referred to as “corporate data” or “enterprise data”, such as sales data, marketing data, employee data, etc.) and third party data (i.e., data generated outside of the enterprise accessing the data, such as, public data, data retrieved from third party sources such as the U.S. Postal Service or Dunn & Bradstreet, etc.) that provide demographic information about the selected area. Since there are so many different possible results that can be generated based on user requests, it is very difficult to anticipate all of the possible results, and preload and pre-reference static data (e.g., images) that represent all of the possible results.
Thus, there are numerous problems in the existing spatial systems solutions. One problem is dynamically accessing data sets and generating spatial references (i.e., geocoding) for enterprise data sets that are typically not spatially-referenced (e.g., sales results, customer information, inventory levels, plant or asset locations, etc.). Another problem is simultaneously combining enterprise data with third party data (e.g., geographical data) to allow enterprises to spatially analyze and visualize enterprise data and other data (e.g., traditional spatially referenced data sets in a spatial context).
Yet another problem is illustrated with reference to FIGS. 1-2. Referring to FIG. 1, a client application sends a request 101 via a network 102 to a server computer 103. The server computer 103 retrieves the requested data from a data store 104 and generates individual images for each data layer 105. The individual images are spatially referenced images (e.g., an image in which each point is associated with a longitude and latitude). The server computer 103 obtains data from the data store 104. The server computer 103 combines the individual image layers 106 into one single composite image 107. The composite image 107 is then sent via a network to the client application 101 to be displayed.
Since the server computer needs to combine the images into one composite image, and then send the composite image to the client, several problems occur. For example, when a user wants to view the composite image with some changes (e.g., view a new data layer, view one less data layer, or change the order of the layers), the server computer 103 regenerates individual images for each data layer to be viewed and sends a new composite image to the client application. This adds additional processing load on the server computer and requires many roundtrip transactions between the client application 101 and the server computer 103. Additionally, the response time becomes slow when the user wants to view a new data layer (in addition to the ones currently being viewed or accessed) or when the user wants to view one less data layer, since each type of request results in new roundtrip requests to the server computer 103 to generate a new composite image.
Referring to FIG. 2, a client application 201 sends a request via a network 202 to a server computer 203. The server computer 203 retrieves the requested data from a data store 204. The raw data for each data layer is retrieved as individual data sets 205 and sent via network 202 to a complex client application 201. The client application 201 stores each data set in data store 208. The client application 201 will render and convert 209 individual sets of raw data to displayable images 210. Then the client application 201 will combine the displayable images into one composite image 211 and finally display the composite image 211 to the user.
Several problems occur with the technique illustrated in FIG. 2. For example, the technique requires a complex client software application 201 to contain the logic to convert and, possibly, combine raw spatially referenced data into viewable data layers. Additionally, raw data, rather than images, are sent to the client application 201, which results in data being copied to and stored on client computers, rather than being centralized in a single data store.
Yet another problem is that Geographic Information Systems (GIS) require data to be in a very specific format that allows client applications to process and allows users to view the data spatially. Due to this need, the process of generating and linking spatial coordinate data often requires the conversion of the format of the initial data set to a new spatially referenced format. The processing for conversion of the format is typically performed manually, which is time consuming and error prone. The conventional process for converting data so that the data may be viewed spatially cannot be easily automated because of the manual processing required. The manual processes also make it very difficult to track the chain of custody for the data. This is a problem in a server computer that handles data from different customers. The manual processes also make it difficult to generate data validation procedures that can guarantee the integrity of the data across all the processes.
FIG. 3 illustrates a conventional process for converting data. For example, customer data 312 is tabular data. The customer data 312 is uploaded in block 320. To make the tabular data viewable spatially, location information (e.g., addresses) that is associated with the customer data 312 is cleansed in block 340 using conventional cleansing techniques known in the art. Cleansing of location information refers to determining that the location information is valid and accurate by, for example, comparing the location information to data in a data store available from the U.S. Postal Service or Dunn and Bradstreet (which maintains information on businesses). Also in block 340, a set of spatial coordinates are generated from the cleansed location information, and this is often done using a conventional geocoding application that generates a set of spatial coordinates (e.g., latitude and longitude) for each data element (e.g., customer record) in this example. The result of geocoding is spatial coordinate data 370, which is stored in spatial data store 360.
Next, a new data set is created by merging the customer data 312 with the spatial coordinate data 370. This data then needs to be uploaded back to the server computer 320 from the spatial data store 360. Then, rendering specification data is generated, which describes how the data should be presented as a spatial layer, and the hardcoded table is displayed in block 380.
The resulting transformed data is typically no longer usable by existing applications. A common solution to this problem is to keep the original data intact and create a new data set to be loaded and viewed spatially, which includes the original data concatenated with the spatial coordinate data. This causes data integrity problems with the original data getting out of synch with the data created for spatial viewing.
Moreover, the resulting data cannot be made visible to the client applications without restarting the client and server processes. Conventional systems use configuration files at startup time to read information about the data presented to the client applications. The server applications or server processes are shut down, configuration files are updated, and the server applications or server processes are restarted in order to provide access to new or modified data to client applications. This process logs out the client applications, and the client server session may need to be restarted before the new or modified data can be accessed and displayed.
A further problem is that conventional systems provide access control to data with one of two approaches. First, access control is done at the application level. In other words, a user is granted or denied access to the application based on the user's credentials. Once the user is granted access to the application, the user may view all data the application can access. Therefore, all users who use the application may view all the data at the server computer. Second, access to data is controlled by access control mechanisms provided by back end data store technology. This requires the application to access the back end data store with the same credentials used to access the application itself. Both approaches have several problems.
With the first approach, all users of an application get to view all data that the application can access, and access is not restricted to a subset of the data based on the user of the application. If different users need to be granted access to different sets or groupings of data, multiple instances of the application or multiple processes within the same application need to be run, each working with a different set or grouping of data. Also, users view all data within a data set, and access is not restricted to some records or data elements within a data set based on attributes associated with the user (e.g., security clearance level). Take for example a data set that contains the customer data for a company. The data set contains customer data for the entire country. Conventional spatial systems do not restrict access of users that are part of the west coast sales team to only the customer data for the west coast. A completely new data set that contains only the west coast customer information would have to be created in conventional systems for access to be limited. Moreover, it is very difficult to customize the presentation of data to the user based on access information associated with the user.
With the second approach, the credentials of the users of the application are tied directly to the credentials used to access the back end data store. This creates a very cumbersome process of user access right management within the application and from the perspective of the personnel setting up access rights to the server computer. Moreover, the application gets tied into the back end data store technology used, and it is extremely difficult to replace back end data store technology with a new technology as it becomes available. Also, application code gets extremely complex when multiple data stores with different access requirements are used.
Further problems occur in conventional systems when displaying images from pyramided data. A set of related spatially referenced data is commonly referred to as a data layer. A typical image, seen by a user in client software, will consist of spatially referenced images, each of which is a data layer, overlaid on top of one another utilizing spatial queries of spatial coordinates (e.g., latitude and longitude).
When a user changes the viewing area of a data layer displayed by client software by zooming in or out, various amounts of data need to be retrieved from the server computer to display the spatially referenced data to the user. When the user zooms out, more data needs to be retrieved from the server computer, since the area being viewed is larger. As the user zooms out, since the actual display area on the client software display device is fixed, more and more data is retrieved from the server computer to produce an image having more detail. This leads to the server computer taking progressively longer times to generate a composite spatially referenced image as the user zooms out. Conventional systems use “pyramiding” to handle such zooming.
Pyramiding is a technique in which the data for a data layer is stored in more than one data set. All the data sets contain data for the same subject matter in the same geographical area of interest (i.e., subsets of data based on a particular area being viewed), but the level of detail varies from one data set to another. These data sets can be arranged in a pyramid, such that the data sets at the top of the pyramid have the data with the least amount of detail. Data in the data sets at the lower levels in the pyramid have progressively higher level of detail, with the data set at the lowest level in the pyramid containing the most detailed data.
For the same geographical area of interest, each data set at a higher level in the pyramid contains less data than the data set at the pyramid level immediately below. Therefore, it takes less time to convert the data to a spatially referenced image at a higher level in the pyramid than at the pyramid level below. As the user zooms out, if the spatially referenced image is generated from data sets at progressively higher levels in the pyramid, the time taken by the server computer to create the spatially referenced image should not increase as a user zooms out.
The typical pyramid consist of several levels with the data set at each level being used for a fixed range of zoom scales, with a predefined minimum zoom scale and a predefined maximum zoom scale. When the user zooms out beyond the maximum zoom scale, the data set from the next higher level in the pyramid will be used to generate the spatially referenced image. When the user zooms in below the minimum zoom scale for a pyramid level, the data set from the pyramid level at the next lower level in the pyramid is used to generate the spatially referenced image. The data for each level in the pyramid will be stored as separate data sets.
FIG. 4 illustrates a pyramid 410 for roads data. If the roads data of a pyramid (e.g., pyramid 410) is stored in data store tables, there would be five data tables in the data store, each containing data for one level in the pyramid 410. FIG. 5 illustrates conventional processing when data is pyramided. Each level of the pyramid 410 is stored as a table 550 at GIS system 530. Each table is a data set, and each data set stored in the data store is represented as one data layer in a user interface (UI) screen presented to a user. For example, the pyramid depicted in FIG. 4 is presented as five data layers to the user in FIG. 5. So instead of seeing the related data in the different levels of a pyramid as one data layer, the user sees five different data layers.
Conventional systems use special client computer or server computer logic to make a data layer available for viewing based on the zoom scale the user is using. Since at any given time the user will be at only one zoom scale, only one out of the five layers in the pyramid will be available for viewing. Via client software 510, a user selects multiple layers and a zoom scale (block 512), and the selection is sent to the server computer 520 via a network. A data store is accessed, image layers are generated, and a consolidated image is returned to the client software 510 (block 532).
The one-to-one relationship between data sets and their corresponding data layer representation by the client software creates several problems. For example, unnecessary information about how data is stored on the back end data store is exposed to the client software. That is, data is seen as multiple data layers matching the different data sets stored in the data storage device for the same set of spatial data (e.g., roads). Therefore, in a typical application, a user can be presented with an overwhelming number of data layers, many of which are duplicate data layers for the same set of data at different zoom scales.
Since the user is allowed to view only one individual data layer at a time in a pyramid based on the user's zoom scale, as the user zooms in or out, the data layer the user is currently viewing may suddenly become unavailable for viewing. The user then has to manually choose to view the next data layer in the pyramid to view data. That is, the switchover from one level in the pyramid to the next is not always transparent.
Some conventional systems that store raster data, store the data as a pyramid to speed up the retrieval of the raster data. These conventional systems, however, do not store any other form of spatially referenced data, such as vector data.
A further problem involves third party systems. A third party system is one that is outside of a spatial system. If an organization wishes to apply custom business logic and validations to the manipulation and viewing of spatially enabled information, many steps are necessary and the process is expensive. Some examples of business logic include, for example, when editing a spatial layer, it may be necessary, that prior to saving the edit, to verify that the areas of plots of land must be smaller than a certain size, a minimum distance from a river, contained within other plots, etc. Validations may include basic editable data element (e.g., graphical object, tabular data, etc.) validations (e.g., validations that make sure only well formed graphical objects are created). Other validations may include the rules about the relationships between various graphical objects or data layers. Often, several different software packages are purchased, installed, and configured to get spatial capability. Additionally, custom software is written and maintained. Then, various base or background layer information is purchased, configured, and maintained. Moreover, access control, storage, and distribution problems must also be solved. Often in-house expertise must be developed in order to configure and maintain these systems.
Another problem in conventional Geographic Information Systems (GIS) is the difficulty in editing images. In particular, a composite image viewed by a user consists of images from multiple data layers overlaid on top of one another. The spatial data may be in a raster data or vector data format. Raster data refers to pre-generated images that may need to be cropped to fit the viewing area desired by the user. Vector data is a set of coordinate numbers that are converted to an image.
Conventional editors are typically on dedicated desktop applications because of the processing power, user interface, and data storage needed for editing. In some conventional systems, editing requests are sent from the client computer to the server computer, the server computer performs the editing, and the server computer returns a composite image to the client computer. There are several problems with trying to implement an effective editor in client software. For example, it is difficult to separate a data layer to be edited from all of the other data layers forming the displayed composite image. It is difficult to gather needed information about the elements in the data layer to be edited and to transfer this information from the server computer to the client software quickly. Also, there is typically a slow response during editing because interactions with users are transmitted back to the server computer for processing. Moreover, the typical user interface is cumbersome. There is difficulty in matching complicated graphical object boundaries to avoid overlaps or exclusion areas by use of “snap to” functions, which match new vertices to existing vertices. Furthermore, it is difficult to copy portions of graphical objects from various data layers to assist with building or modifying graphical objects. Conventional editors also lack the ability to tailor the user interface.
A further problem in a conventional Geographic Information Systems (GIS), involves sharing of customized views of data layers among different users. Some conventional GIS systems may provide the users the ability customize a view of data (i.e., a “data view”). Customizing the data view includes actions such as turning on or off a layer, reordering data layers and highlighting layer objects within a data layer by selecting the objects with a selection tool. Users may also add annotations to the view by drawing on the image viewing area using an annotation tool. These functions are performed by the client application at the client computer and the results of such customizations are not saved on the server computer.
Conventional systems provide two types of functionality for saving customized views of data. In terms of a first type of functionality, some GIS systems provide the ability to save only a limited subset of customizations, such as annotations, in a specific user area on the server system, but they do not provide a means to share these customized views with other users of the server computer. In terms of a second type of functionality, other GIS systems allow a limited set of customizations to be shared with other users, but they do not provide the ability to limit access to a subset of the users of the server computer.
Additionally, the first type of functionality provides access limited to only the editor/author of the customized view of the data (i.e., the project) and no other user. These GIS systems do not have the ability to save all customization done by the user as a project, then share this project with other users, to properly discuss and possibly enable the other users to provide their inputs, comments, and modifications to the project on-line. That is, the first type of functionality lacks on-line collaboration of a project within a GIS system.
On the other hand, the second type of functionality provides access to all users of the system of the newly customized data (i.e., the project). Such open access creates the problem that the project will not be confidential and all users of the system will be able to view and further modify the project on-line. This functionality creates lack of on-line confidentiality, security, and integrity of a project within a GIS system.
Regardless of the many benefits of using geographic information to make business decisions, it is very costly for companies to build spatial information system infrastructure and to maintain the infrastructure properly. Also, current techniques for acquiring and manipulating spatial data are cumbersome and very time consuming. Furthermore, as noted above, there are no easy techniques for integrating enterprise data that is not spatially referenced with geographic information data to fully maximize the spatial capabilities of geographic information data.
To fully support data access for geographic information in a cost effective way, there is a need for a solution for standardizing data, integrating different business rules to support the integration of enterprise data and geographic information data for spatial representation. Also there is a need for a web-based architecture that is secure and easily scalable to support multiple users who need to access the geographic information, as well as, to share and collaborate using the geographic information with other users.